package com.zy.explore.sys.infrastructure.third.dingtalk.vo;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.sql.Timestamp;
import java.util.Date;

/**
 * description 打卡记录VO
 *
 * @author 🇨🇳中国印🇨🇳
 * @date 2021年07月08日 03:10
 */
@ApiModel("打卡记录VO")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class DingRecordVO {

    @ApiModelProperty("数据来源:ATM：考勤机打卡（指纹/人脸打卡）BEACON：IBeacon DING_ATM：钉钉考勤机（考勤机蓝牙打卡） USER：用户打卡 BOSS：老板改签 APPROVE：审批系统 SYSTEM：考勤系统 AUTO_CHECK：自动打卡")
    private String sourceType;

    @ApiModelProperty("计算迟到和早退，基准时间毫秒数")
    private Timestamp baseCheckTime;

    @ApiModelProperty("实际打卡时间, 用户打卡时间的毫秒数。")
    private Timestamp userCheckTime;

    @ApiModelProperty("关联的审批实例ID，当该字段非空时，表示打卡记录与请假、加班等审批有关。")
    private String procInstId;

    @ApiModelProperty("关联的审批ID，当该字段非空时，表示打卡记录与请假、加班等审批有关。")
    private Long approveId;

    @ApiModelProperty("位置结果 Normal：范围内 Outside：范围外 NotSigned：未打卡")
    private String locationResult;

    @ApiModelProperty("打卡结果 Normal：正常 Early：早退 Late：迟到 SeriousLate：严重迟到 Absenteeism：旷工迟到 NotSigned：未打卡")
    private String timeResult;

    @ApiModelProperty("考勤类型 OnDuty：上班 OffDuty：下班")
    private String checkType;

    @ApiModelProperty("打卡人的UserID")
    private String userId;

    @ApiModelProperty("工作日")
    private Timestamp workDate;

    @ApiModelProperty("打卡记录ID")
    private Long recordId;

    @ApiModelProperty("排班ID")
    private Long planId;

    @ApiModelProperty("考勤组ID")
    private Long groupId;

    @ApiModelProperty("唯一标识ID")
    private Long id;

    @ApiModelProperty("分页返回参数，表示是否还有更多数据。true:是 false:否")
    private Boolean hasMore;
}
